gdk_enable_multidevice
gdk_device_manager_get_display
gdk_device_manager_list_devices
+gdk_device_manager_get_client_pointer
<SUBSECTION>
gdk_device_get_name
gdk_device_manager_get_display
gdk_device_manager_get_type G_GNUC_CONST
gdk_device_manager_list_devices
+gdk_device_manager_get_client_pointer
#endif
#endif
return GDK_DEVICE_MANAGER_GET_CLASS (device_manager)->list_devices (device_manager, type);
}
+/**
+ * gdk_device_manager_get_client_pointer:
+ * @device_manager: a #GdkDeviceManager
+ *
+ * Returns the client pointer, that is, the master pointer that acts as the core pointer
+ * for this application. In X11, window managers may change this depending on the interaction
+ * pattern under the presence of several pointers.
+ *
+ * You should use this function sheldomly, only in code that isn't triggered by a #GdkEvent
+ * and there aren't other means to get a meaningful #GdkDevice to operate on.
+ *
+ * Returns: The client pointer.
+ *
+ * Since: 3.0
+ **/
+GdkDevice *
+gdk_device_manager_get_client_pointer (GdkDeviceManager *device_manager)
+{
+ g_return_val_if_fail (GDK_IS_DEVICE_MANAGER (device_manager), NULL);
+
+ return GDK_DEVICE_MANAGER_GET_CLASS (device_manager)->get_client_pointer (device_manager);
+}
+
+
#define __GDK_DEVICE_MANAGER_C__
#include "gdkaliasdef.c"
/* VMethods */
GList * (* list_devices) (GdkDeviceManager *device_manager,
GdkDeviceType type);
+ GdkDevice * (* get_client_pointer) (GdkDeviceManager *device_manager);
};
GType gdk_device_manager_get_type (void) G_GNUC_CONST;
GdkDisplay * gdk_device_manager_get_display (GdkDeviceManager *device_manager);
GList * gdk_device_manager_list_devices (GdkDeviceManager *device_manager,
GdkDeviceType type);
+GdkDevice * gdk_device_manager_get_client_pointer (GdkDeviceManager *device_manager);
G_END_DECLS
* Return value: the core pointer device; this is owned by the
* display and should not be freed.
*
- * Deprecated: 3.0: Use gdk_display_get_device_manager() instead, or
+ * Deprecated: 3.0: Use gdk_display_get_client_pointer() instead, or
* gdk_event_get_device() if a #GdkEvent with pointer device
* information is available.
**/
*
* Since: 2.2
*
- * Deprecated: 3.0: Use gdk_display_get_device_manager() instead, or
+ * Deprecated: 3.0: Use gdk_display_get_client_pointer() instead, or
* gdk_event_get_device() if a #GdkEvent with device
* information is available.
**/
static GList * gdk_device_manager_core_list_devices (GdkDeviceManager *device_manager,
GdkDeviceType type);
+static GdkDevice * gdk_device_manager_core_get_client_pointer (GdkDeviceManager *device_manager);
G_DEFINE_TYPE (GdkDeviceManagerCore, gdk_device_manager_core, GDK_TYPE_DEVICE_MANAGER)
object_class->finalize = gdk_device_manager_core_finalize;
object_class->constructed = gdk_device_manager_core_constructed;
device_manager_class->list_devices = gdk_device_manager_core_list_devices;
+ device_manager_class->get_client_pointer = gdk_device_manager_core_get_client_pointer;
}
static GdkDevice *
return devices;
}
+
+static GdkDevice *
+gdk_device_manager_core_get_client_pointer (GdkDeviceManager *device_manager)
+{
+ GdkDeviceManagerCore *device_manager_core;
+
+ device_manager_core = (GdkDeviceManagerCore *) device_manager;
+ return device_manager_core->core_pointer;
+}
static GList * gdk_device_manager_win32_list_devices (GdkDeviceManager *device_manager,
GdkDeviceType type);
+static GdkDevice * gdk_device_manager_win32_get_client_pointer (GdkDeviceManager *device_manager);
G_DEFINE_TYPE (GdkDeviceManagerWin32, gdk_device_manager_win32, GDK_TYPE_DEVICE_MANAGER)
object_class->finalize = gdk_device_manager_win32_finalize;
object_class->constructed = gdk_device_manager_win32_constructed;
device_manager_class->list_devices = gdk_device_manager_win32_list_devices;
+ device_manager_class->get_client_pointer = gdk_device_manager_win32_get_client_pointer;
}
static GdkDevice *
return devices;
}
+static GdkDevice *
+gdk_device_manager_win32_get_client_pointer (GdkDeviceManager *device_manager)
+{
+ GdkDeviceManagerWin32 *device_manager_win32;
+
+ device_manager_win32 = (GdkDeviceManagerWin32 *) device_manager;
+ return device_manager_win32->core_pointer;
+}
+
void
_gdk_input_set_tablet_active (void)
{
static GList * gdk_device_manager_core_list_devices (GdkDeviceManager *device_manager,
GdkDeviceType type);
+static GdkDevice * gdk_device_manager_core_get_client_pointer (GdkDeviceManager *device_manager);
static void gdk_device_manager_event_translator_init (GdkEventTranslatorIface *iface);
object_class->finalize = gdk_device_manager_core_finalize;
object_class->constructed = gdk_device_manager_core_constructed;
device_manager_class->list_devices = gdk_device_manager_core_list_devices;
+ device_manager_class->get_client_pointer = gdk_device_manager_core_get_client_pointer;
}
static void
return devices;
}
+static GdkDevice *
+gdk_device_manager_core_get_client_pointer (GdkDeviceManager *device_manager)
+{
+ GdkDeviceManagerCore *device_manager_core;
+
+ device_manager_core = (GdkDeviceManagerCore *) device_manager;
+ return device_manager_core->core_pointer;
+}
+
#define __GDK_DEVICE_MANAGER_CORE_C__
#include "gdkaliasdef.c"
static GList * gdk_device_manager_xi2_list_devices (GdkDeviceManager *device_manager,
GdkDeviceType type);
+static GdkDevice * gdk_device_manager_xi2_get_client_pointer (GdkDeviceManager *device_manager);
static void gdk_device_manager_xi2_event_translator_init (GdkEventTranslatorIface *iface);
object_class->finalize = gdk_device_manager_xi2_finalize;
device_manager_class->list_devices = gdk_device_manager_xi2_list_devices;
+ device_manager_class->get_client_pointer = gdk_device_manager_xi2_get_client_pointer;
}
static void
return g_list_copy (list);
}
+static GdkDevice *
+gdk_device_manager_xi2_get_client_pointer (GdkDeviceManager *device_manager)
+{
+ GdkDeviceManagerXI2 *device_manager_xi2;
+ GdkDisplay *display;
+ int device_id;
+
+ device_manager_xi2 = (GdkDeviceManagerXI2 *) device_manager;
+ display = gdk_device_manager_get_display (device_manager);
+
+ XIGetClientPointer (GDK_DISPLAY_XDISPLAY (display),
+ None, &device_id);
+
+ return g_hash_table_lookup (device_manager_xi2->id_table,
+ GINT_TO_POINTER (device_id));
+}
+
static void
gdk_device_manager_xi2_event_translator_init (GdkEventTranslatorIface *iface)
{
GList *slave_devices;
GList *floating_devices;
+ GdkDevice *client_pointer;
+
int opcode;
};